DigiOffice Gateway Web Services

<back to all web services

ProcessDocumentRequestMessage

Requires Authentication
import datetime
import decimal
from marshmallow.fields import *
from servicestack import *
from typing import *
from dataclasses import dataclass, field
from dataclasses_json import dataclass_json, LetterCase, Undefined, config
from enum import Enum, IntEnum


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Environment:
    title: Optional[str] = None
    code: Optional[str] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Party:
    title: Optional[str] = None
    code: Optional[str] = None
    version: Optional[str] = None
    environment: Optional[Environment] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Header:
    message_i_d: Optional[str] = None
    timestamp: datetime.datetime = datetime.datetime(1, 1, 1)
    sender: Optional[Party] = None
    recipient: Optional[Party] = None
    request_message_i_d: Optional[Object] = None


class eventType(str, Enum):
    UPDATE = 'Update'
    CREATE = 'Create'
    DELETE = 'Delete'
    RESPONSE = 'Response'


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class Document(ICustomProperties):
    id: Optional[str] = None
    root_document_i_d: Optional[str] = None
    registrationprofile_i_d: Optional[str] = None
    title: Optional[str] = None
    full_title: Optional[str] = None
    number: Optional[str] = None
    version: Optional[str] = None
    external_number: Optional[str] = None
    external_version: Optional[str] = None
    internal_number: Optional[str] = None
    internal_invoice_number: Optional[str] = None
    person_i_d: int = 0
    relation_i_d: int = 0
    relation_title: Optional[str] = None
    project_i_d: int = 0
    project_title: Optional[str] = None
    extension: Optional[str] = None
    date: Optional[datetime.datetime] = None
    comments_count: int = 0
    has_comments: bool = False
    has_preview: bool = False
    extra_field: Optional[str] = None
    is_favorite: bool = False
    documentcategory_text: Optional[str] = None
    file_size: Optional[int] = None
    file_date: Optional[datetime.datetime] = None
    hash: Optional[str] = None
    hash_type: Optional[str] = None
    file_url: Optional[str] = None
    standard_document_url: Optional[str] = None
    is_corporate_identity: bool = False
    user_title: Optional[str] = None
    is_frozen: bool = False
    internal_company_i_d: int = 0
    direct_url: Optional[str] = None
    allow_digital_signing_only_on_primary_versions: bool = False
    is_primary_version: bool = False
    file_extension: Optional[str] = None
    custom_properties: Optional[Dict[str, Object]] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentMessage:
    header: Optional[Header] = None
    event_type: Optional[eventType] = None
    document: Optional[Document] = None


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class DocumentRequestMessage:
    header: Optional[Header] = None
    root_document_i_d: Optional[str] = None
    include_physical_file: bool = False


@dataclass_json(letter_case=LetterCase.CAMEL, undefined=Undefined.EXCLUDE)
@dataclass
class ProcessDocumentRequestMessage:
    instance_id: Optional[str] = None
    document_request: Optional[DocumentRequestMessage] = None

Python ProcessDocumentRequestMessage DTOs

To override the Content-type in your clients, use the HTTP Accept Header, append the .jsv suffix or ?format=jsv

HTTP + JSV

The following are sample HTTP requests and responses. The placeholders shown need to be replaced with actual values.

POST /jsv/reply/ProcessDocumentRequestMessage HTTP/1.1 
Host: kpm_digiofficeapigateway.tbi.nl 
Accept: text/jsv
Content-Type: text/jsv
Content-Length: length

{
	DocumentRequest: 
	{
		Header: 
		{
			MessageID: String,
			Timestamp: 0001-01-01,
			Sender: 
			{
				Title: String,
				Code: String,
				Version: String,
				Environment: 
				{
					Title: String,
					Code: String
				}
			},
			Recipient: 
			{
				Title: String,
				Code: String,
				Version: String,
				Environment: 
				{
					Title: String,
					Code: String
				}
			},
			RequestMessageID: {}
		},
		RootDocumentID: String,
		IncludePhysicalFile: False
	}
}
HTTP/1.1 200 OK
Content-Type: text/jsv
Content-Length: length

{
	Header: 
	{
		MessageID: String,
		Timestamp: 0001-01-01,
		Sender: 
		{
			Title: String,
			Code: String,
			Version: String,
			Environment: 
			{
				Title: String,
				Code: String
			}
		},
		Recipient: 
		{
			Title: String,
			Code: String,
			Version: String,
			Environment: 
			{
				Title: String,
				Code: String
			}
		},
		RequestMessageID: {}
	},
	EventType: Update,
	Document: 
	{
		GlobalID: String,
		RootDocumentID: String,
		Code: String,
		Subject: String,
		VersionNumber: String,
		NewestVersion: False,
		RelationReference: 
		{
			GlobalID: String,
			Title: String
		},
		DocumentTypeReference: 
		{
			GlobalID: String,
			Title: String
		},
		ProjectReference: 
		{
			GlobalID: String,
			Title: String
		},
		ConstructionBlockReference: 
		{
			GlobalID: String,
			Title: String
		},
		ConstructionNumberReference: 
		{
			GlobalID: String,
			Title: String
		},
		HousingTypeReference: 
		{
			GlobalID: String,
			Title: String
		},
		Floor: 0,
		FloorSpecified: False,
		DeletedDate: 0001-01-01,
		DeletedDateSpecified: False,
		File: 
		{
			Type: String,
			Name: String,
			Size: 0,
			Content: String,
			ModifiedDate: 0001-01-01
		},
		CustomFields: 
		[
			{
				Name: String,
				Value: String
			}
		],
		CreationDate: 0001-01-01,
		CreatedBy: String,
		ModifiedDate: 0001-01-01,
		ModifiedBy: String
	}
}